home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / nosquick.zip / NETDOC < prev   
Text File  |  1990-10-20  |  42KB  |  912 lines

  1. Notes for TCP/IP "quick start" of the TCP/IP on an MS-DOS computer.
  2.  
  3. This is a collection of doc files that I accumulated.  I put them 
  4. together and deleted some of the repetition.  Refer to the regular 
  5. userman doc for detailed answers.  This is only supplemtary to that 
  6. documentation.  Information is rather scattered, but I wanted to do a 
  7. minimum of editing on the original material, which is quite good.  This 
  8. file starts with a quick start, using unique features of this version.  
  9. Later, the "Plug and Play" quick start shows another method, and better 
  10. tells you what is going on.  Even later, there are some vital things 
  11. about using Net/ROM, the Finger, and even (Yikes!) advice on how to run 
  12. from floppies.
  13.  
  14. In case you didn't already know, there are two executable programs, net 
  15. and bm.  Net is the networking program (TCP/IP).  Bm is the mailer, 
  16. Bdale's Mailer, which is used to read and write messages.  This version 
  17. of net and bm use definable path names to files.  Net has a more "user 
  18. friendly" TCP/IP interface for non-IP users (mailbox function that gives 
  19. as well as receives).  Net is relatively small, very well behaved (never 
  20. crashes, and never interferes with other programs running concurrently.)  
  21. There are two net versions, one that has the DRSI Packet Adapter driver 
  22. installed, and one that doesn't.  For a quick start, you can do the 
  23. following:
  24.  
  25. There are two ways you can set up your directory structure, my way, or 
  26. the way everybody else does it.  If you do it my way, the files will be 
  27. collected together a little more neatly, and wherever you want them to 
  28. be.  If you do it the second way, this version of net will work just like 
  29. all the other standard versions.  The second way presumes that files are 
  30. found where defined when net and bm were compiled.  The second method is 
  31. described later (and in most advice you see on setting up net.)
  32.  
  33. To do it my way, you will need to use environmental variables to tell net 
  34. and bm where to find the required files.  Environmental variables are 
  35. strings tucked away in the operating system that let you pass information 
  36. to running programs.  The environmental variables for this purpose are, 
  37. NETHOME, SPOOL, and PUBLIC.  (I also use TZ to establish time zone 
  38. information on mail messages.)  You put lines in your autoexec.bat file, 
  39. like those that follow, and reboot the computer, or make a batch file that 
  40. sets these variables and then executes net.  (If you get a message like, 
  41. "Out of environment space", then I presume you are already savvy of the 
  42. environment and know what to do about it.)  In the following example, I 
  43. assume you would make directories, NET, SPOOL, and PUBLIC, right off of 
  44. root, like the diagram that follows.  (The forward slashes are correct, I 
  45. don't think MS-DOS cares but Unix does, and I run this thing on both.  
  46. These variable names must be in caps, but the rest of the "set" command 
  47. doesn't need to be.)
  48.  
  49. First, here is how you set the environmental variables:
  50.  
  51. set NETHOME=/net
  52. set SPOOL=/spool
  53. set PUBLIC=/public
  54. set TZ=CST6CDT
  55.  
  56. then, the directories and subdirectories (in caps) and files that go into 
  57. them, should be set up to look like:
  58.  
  59.         \NET__ . . . . . . . . . autoexec.net, ftpusers, hosts.net
  60.            |                     bm.rc, net.exe, bm.exe
  61.            |                     alias (optional)
  62.            |                     helpbox.net (optional)
  63.            |
  64.            |\FINGER_. . . . . . .optional finger files
  65.  
  66.         \SPOOL_. . . . . . . . . * net.log (or put in \net, or
  67.                      |           in \net\mail, or anywhere you want)
  68.                      |
  69.                      |___MAIL. . * user.seq
  70.                      |           * user.txt
  71.                      |
  72.                      |___MQUEUE. * sequence.seq
  73.                      |           * #.txt
  74.                      |           * #.wrk
  75.                      |
  76.                      |___RQUEUE. only used if you're a mail
  77.                                  gateway...
  78.  
  79.         \PUBLIC_. . . . . . . .  downloadable mbox files
  80.  
  81. The files marked "*" are created by net or bm when they run.  You can 
  82. leave out the optional files until you figure out what they are for.  I 
  83. also recommend not messing with Net/ROM until you know how to do it 
  84. properly, and have decided to keep your computer on all the time.  You 
  85. can mess up the Net/ROM network with this program if it is misused.
  86.  
  87. If you want to use the alternate method, (files scattered all over the 
  88. place), jump subroutine to "Plug and Play", later on.
  89.  
  90. If you want to be consistent with time stamping of messages, set the 
  91. environmental variable TZ = CST6CDT or EST5EDT, or whatever, and it will 
  92. timestamp the messages with the proper time if your DOS clock is set to 
  93. local time.  (The number in the TZ string is the offset from UTC.)  The 
  94. copy of BM that I supply handles this timezone thing correctly.  If you 
  95. don't do this, it will use UTC for time stamping and you will need to 
  96. set your computer clock accordingly.  The following relates to the 
  97. little differences between my code and the mainstream net code:
  98.  
  99. Examine the sample files I included, edit them to fit your situation, and 
  100. you will be ready to go.  You just start net and see if it upchucks some 
  101. error messages.  At the command prompt, type "host".  If it doesn't 
  102. respond with your host name, re-read the above.  If you are more 
  103. cautious, read on before launching the thing.  The "Plug and Play" 
  104. information a little further down explains in much more detail how to set 
  105. up files for your operation.
  106.  
  107.       Notes on K5JB version 890421.0i of net.exe - Oct 20, 1990
  108.  
  109. (This is a synopsis, in reverse version order, from my version notes.)
  110.  
  111. This note covers general differences between this code and the 
  112. mainstream net (non-NOS) code.  Only difference between this version (i)
  113. and the May 28, 1990 version (g/h) is corrected trace to file in 
  114. udpdump.c.  Notes that refer to suffix g or h are unchanged.  I re-
  115. organized the files into Lharc files to get a little more needed room.
  116.  
  117. This version of net is only slightly different from the version 
  118. distributed at Dayton in 1989, v 890421.0.  Initially I cleaned up some 
  119. MS-DOS end of line sequences in text files written by net.  I also fixed 
  120. some problems where tracing sometimes went to screen and sometimes went 
  121. to a trace file (if it was enabled).  The included version of bm has its 
  122. end of line handling fixed also.
  123.  
  124. Then, some mailbox (mbox) features were added to permit AX25 users to read 
  125. their mail with the "r" command, see who has mail with the "m" command, 
  126. list the public directory with the "l" command, download a file from the 
  127. public directory with the "g" <filename> command, get help with the "h" 
  128. command, and see what version is running with the "v" command.  See 
  129. ax_mbx.c for these changes.  (If there is a disconnect during a file 
  130. download over a non-Net/ROM AX.25 link, you will get a "Warning" message 
  131. about freeing garbage.  Don't worry about it.)  If an operator sends any 
  132. characters to the mbox during a download, it will abort as soon as the 
  133. queue is empty.
  134.  
  135. To recover some space for mbox, I combed through the code and #ifdefed 
  136. as DEAD that code that did nothing.  I checked all the compiler warnings 
  137. to see if they were significant.  I made no changes to modules solely to 
  138. correct these warnings because I wanted it to be simpler to compare this 
  139. code to work others are doing.  File dates indicate which modules were 
  140. changed and which ones weren't.  Since I run the code also in Unix, 
  141. portability is important so declarations, etc., aren't compiler 
  142. dependent.  Most changes are marked with my call so they are easy to 
  143. find with grep K5JB <fn>.
  144.  
  145. I added file name initialization to permit looking for files in 
  146. custom areas.  Three environmental variables are sought by the program:
  147.  
  148. NETHOME is the directory where net will look for autoexec.net, ftpusers, 
  149. hosts.net, helpbox.net, and alias.  (syntax example, set NETHOME=/net)  
  150. If it is not specified, net uses root (\).  Logging is normally done in 
  151. $NETHOME, if specified.  Session recording also defaults to $NETHOME.
  152.  
  153. MAILSPOOL is the directory where mail files are found and defaults to 
  154. /spool unless you specify differently.  (Syntax, set SPOOL=/spool)  It 
  155. will find /spool/mail, /spool/mailq, and other necessary directories 
  156. below the /spool directory level.
  157.  
  158. PUBLIC is the directory where you keep files that are safe to download 
  159. over an ax.25 link.  If it is not specified it uses /public.  (Syntax, 
  160. set PUBLIC=/public)  By "safe to download over an ax.25 link", I mean 
  161. not monsterous, not binary executables.
  162.  
  163. The environmental variable, TZ, is also recognized, by net and bm, for 
  164. date and timestamping messages.  Syntax is, set TZ=CST6CDT.  Note that 
  165. the "/" is OK in these path names on MS-DOS.  (TZ may not recognize 
  166. daylight savings time in MS-DOS, I don't remember.  If it doesn't, with 
  167. DST just change the TZ variable to CDT6CDT, or similar.)
  168.  
  169. I suggest keeping the helpbox.net file short and point to a longer file 
  170. in /public to prevent careless operators from causing a monster dump 
  171. with a stroke of one key.  As a sample, I included my copy of 
  172. helpbox.net as an mbox discussion below so you can get the idea.
  173.  
  174. Bm has been modified to work likewise and looks for bm.rc and alias in 
  175. $NETHOME if it has been specified.  Otherwise it looks in root.  I also 
  176. fixed an array over-run if an operator with broken return key enters a 
  177. line of over 128 characters.  (Replaced gets() with fgets().)  (I think 
  178. this version of bm.exe is 3.3.1g.)
  179.  
  180. In summary, if you net have version suffix "f", or later, (optionally) 
  181. put the following lines in your autoexec.bat file in root:
  182.  
  183. set TZ=CST6CDT
  184. set NETHOME=/net
  185. set SPOOL=/spool
  186. set PUBLIC=/public
  187.  
  188. (You can choose any path names you want.  These happen to be the 
  189. defaults if you don't have the environmental variables.  Without them, 
  190. net works exactly as in the mainstream release, looking for support 
  191. files in root.)
  192.  
  193. If you are using Desqview, 173k is suitable memory to set aside for the 
  194. net program (183k if using the DRSI PC*PA card).  Mem stat shows 13k, or 
  195. more available on start, (about 19k available with the PC*PA - its driver 
  196. makes net 7328 bytes bigger and needs additional buffer space).  I have 
  197. not had any problems with net running in less than that.
  198.  
  199. This version of net has NEVER crashed.  It sometimes runs continuously 
  200. for three or six months between times I shut the computer down to tinker 
  201. with it.  I run it on a 10 MHz AT class machine, along with a full blown 
  202. bulletin board, and other applications.  To say the least, it is 
  203. "mature", heh!
  204.  
  205. Enjoy!  K5JB
  206.  
  207. *** EOF
  208.  
  209.               From the TCP/IP Plug and Play disks (edited):
  210.  
  211.              Welcome to the KA9Q Internet Software Package.
  212.                        Revision 890421.0i (K5JB)
  213.  
  214. (Notes collected from various sources and put into one quick-start file.  
  215. Most of this information was supplied by Bdale, N3EUA.  There are four 
  216. appendices for Net/ROM, Finger, mailbox, and floppy applications.  This 
  217. disk may not be part of the complete set described below.  It may only 
  218. be the part you asked for.  If you have a lot of curiosity the 
  219. underpinnings of TCP/IP, get the complete suite from either me, or TAPR.  
  220. TAPR would have the most current version information.  The version I am 
  221. using is the original one distributed at Dayton in 1989.  I have 
  222. modified it to correct some end of line problems in mail files and some 
  223. bugs in tracing and added some of the enhanced AX.25 mailbox 
  224. capabilities that are kicking around.  Immediately after Dayton, some 
  225. fixes were published as Rev. 890421.1 and after that configuration 
  226. control went all to hell.  My version has never crashed on an my AT or 
  227. XT compatibles, nor on a Unix System V machine.  The code is compilable 
  228. with the AT&T compiler.  Joe Buswell, K5JB.)  
  229.  
  230. IF YOU HAVEN'T ALREADY MADE YOUR BACKUP COPIES, DO IT NOW
  231.  
  232. As distributed (by TAPR), this package contains two diskettes:
  233.  
  234.     1ea  Plug and Play disk configured for use with an
  235.          IBM PC/clone. 
  236.  
  237.     1ea  Documentation and TNC software disk.
  238.  
  239. As a first time, or early user you will initially be interested in the 
  240. Plug and Play disk. If you are interested in doing development work or 
  241. browsing through the source code you will find want to obtain our other 
  242. 2-disk set that contains all of the sourcecode in 'C'.
  243.  
  244. This disk is designed to help you get on the air as quickly as possible 
  245. running the TCP/IP protocol suite.  What has been done is to put 
  246. together a disk that is ready to run, except for a few simple site-
  247. specific things that you'll have to do yourself.
  248.  
  249. The files you need to modify are the 4 files that contain information 
  250. specific to your machine and situation.  Use your favorite text editor 
  251. to make the required changes. The files that are provided have been 
  252. heavily annotated to *briefly* describe what each function is. See the 
  253. documentation referred to below for complete explanations.
  254.  
  255. The files that need to be changed are:
  256.  
  257.   \AUTOEXEC.NET  - primary config file for the NET.EXE
  258.                    program. Check each entry line that does
  259.                    NOT begin with an '#'. Substitute your
  260.                    callsign, etc as appropriate.
  261.   \FTPUSERS      - follow the instructions on the sample file,
  262.                    making changes as necessary.
  263.   \BM.RC         - check your hostname, username, and favorite
  264.                    editor.
  265.   \HOST.NET      - prepare a separate hosts.net file which
  266.                    will reflect the hosts accessible from your
  267.                    computer.
  268. and optionally:
  269.  
  270.   \ALIAS         - File used by BM to make address substitutions.
  271.   \NET\HELPBOX.NET File sent to an AX.25 mbox user who asks for help.
  272.   \FINGER\(users).TXT - See Finger information.
  273.  
  274. Once you've done this, you should be able to run NET.EXE successfully.
  275.  
  276. If you have a problem which appears to be hardware related there is a 
  277. good deal of information in the documentation provided. Your easiest 
  278. solution may, however, be to get in touch with someone who is already 
  279. running TCP/IP on your type of equipment.  Problems always seem to get 
  280. fixed faster when there's an expert around!
  281.  
  282. (This is the traditional way to organize net - K5JB)
  283. You will find that this disk is organized into several subdirectories, 
  284. and with the files contained therein as follows:
  285.  
  286.    \(ROOT)__ . . . . . . . . . . . . . . . . autoexec.net
  287.            |                                 ftpusers
  288.            |                                 hosts.net
  289.            |                                 bm.rc
  290.            |                                *net.exe
  291.            |                                *bm.exe
  292.            |                                 alias (optional)
  293.            |
  294.            |___NET___. . . . . . . . . . . . (executables from above)
  295.            |                                 helpbox.net (optional)
  296.            |
  297.            |__FINGER_. . . . . . . . . . . . optional finger files
  298.            |
  299.            |
  300.            |__PUBLIC_. . . . . . . . . . . . downloadable mbox files
  301.            |
  302.            |___SPOOL_. . . . . . . . . . .** net.log (or put in \net)
  303.                      |
  304.                      |
  305.                      |___MAIL. . . . . . .** user.seq
  306.                      |                    ** user.txt
  307.                      |
  308.                      |___MQUEUE. . . . . .** sequence.seq
  309.                      |                    ** #.txt
  310.                      |                    ** #.wrk
  311.                      |
  312.                      |___RQUEUE. . . . . .used if you're a mail
  313.                                           gateway...
  314.  
  315. (As an aside, if you duplicate this disk for a friend, and you are 
  316. *encouraged* to do so, you must use diskcopy and not 'copy *.*' since 
  317. there are subdirectories involved)
  318.  
  319. NOTES
  320.  
  321.  *   If you are using a hard disk the subdirectory configuration should 
  322.      be the same as shown EXCEPT that the files marked with a single 
  323.      asterisk '*' need to be placed in a separate subdirectory of your 
  324.      root directory.  This directory can be called NET, TCPIP or 
  325.      anything of your choice. This subdirectory then becomes the one 
  326.      from which you will execute NET.EXE.
  327.  
  328.  *   The files marked with a double asterisk '**' will be automagically 
  329.      installed for you when you execute BM.EXE.
  330.  
  331. Future revisions:
  332. Revisions to the KA9Q code have been occurring approximately once per 
  333. year. When they occur they are announced on the global Internet, 
  334. Compuserve, TAPR's Packet Status Register newsletter, Gateway, packet 
  335. BBS's and almost anywhere amateur news travels. Revisions, when 
  336. announced, are available as follows:
  337.  
  338. Floppies (IBM format):
  339. Tucson Amateur Packet Radio (TAPR)
  340. Box 12925
  341. Tucson AZ 85732
  342. (602) 323-1710
  343.  
  344. Floppies (other than IBM format):
  345. Future arrangements will be announced when made.
  346.  
  347. Comments and suggestions concerning this disk package 
  348. should be addressed to:
  349.  
  350. Andy Freeborn N0CCZ
  351. President, TAPR
  352. 5222 Borrego Drive 
  353. Colorado Springs, CO 80918
  354. N0CCZ @ K0HOA
  355. uucp: winfree!andy 
  356. arpa: andy%winfree@col.hp.com
  357.  
  358. *** EOF
  359.  
  360. Appendices:
  361.  
  362. The following appendices are:
  363.  
  364.      1. Net/ROM, incl AX.25 mailbox
  365.      2. Finger, giving the
  366.      3. More mailbox - added features
  367.      4. Floppy use, really?
  368.  
  369. Search for them with key word, Appendix (n).
  370.  
  371. Appendix 1: Net/ROM and mailbox
  372.  
  373. The NET/ROM information was provided by Dan Frank W9NK, author of the
  374. NET/ROM support for NET.EXE.73 - 
  375.  
  376. The NET/ROM support for the KA9Q package serves three purposes:
  377.  
  378.    1) Existing NET/ROM networks may be used to send IP traffic.
  379.    2) NET may be used as a NET/ROM packet switch.
  380.    3) NET may be used to communicate with NET/ROM nodes, and its
  381.       mailbox facility can accept connects over the NET/ROM network.
  382.  
  383. "Setting up the NET/ROM Interface"
  384.  
  385.    No physical interface is completely dedicated to net/rom, which is as
  386. it should be.  You attach all your AX.25 interfaces, of whatever sort.
  387. Then you attach the net/rom pseudo-interface ("attach netrom").  Then
  388. you identify to the net/rom software those interfaces you want to allow
  389. it to use, with the "netrom interface" command.  The format of this
  390. command is:
  391.  
  392.      netrom interface ax0 #ipnode 192
  393.  
  394. The first argument is the name of the previously attached interface you
  395. want to use.  The second argument is the alias of your node, to be used in
  396. your routing broadcasts.  The alias is never used for anything else (as
  397. you will see!).  The last number is the net/rom quality figure.  This is
  398. used in computing the route qualities; it represents the contribution of
  399. this interface to the overall computation.  For a 1200 baud half-duplex
  400. connection, 192 is the right number.  
  401.  
  402.    You need a netrom interface command for every interface you're going
  403. to use with net/rom.
  404.  
  405. "Tracing on the NET/ROM Interface"
  406.  
  407.    If you want to trace your NET/ROM datagrams, don't try turning
  408. on trace mode for the "netrom" interface.  Nothing will break, but
  409. nothing will happen.  You should trace the individual AX.25 interfaces
  410. instead.
  411.  
  412. "Routing Broadcasts"
  413.  
  414.    Once you have set up your interfaces, you need to set some timers.
  415. There are two:  the nodes broadcast interval timer, and the obsolescence
  416. timer.  These are set in seconds, like the smtp timer.  You should usually
  417. set them to an hour.  You can set them to something different, if you want.
  418. If your local net/rom nodes broadcast every hour, but you want to do so
  419. every ten minutes, you can say:
  420.  
  421.      netrom nodetimer 600
  422.      netrom obsotimer 3600
  423.  
  424. Every time the obsotimer kicks, the obsolescence counts for all non-permanent
  425. entries are decremented by one.  When the count for an entry falls below
  426. five, it is no longer broadcast.  When it falls to 0, it is removed.  The
  427. count is initialized at 6.  These will eventually be settable parameters;
  428. you can adjust them now by changing the initializers for the variables
  429. in the source file.
  430.  
  431.    When you first come on the air, you can send out nodes broadcasts to
  432. tell the local nodes that you are available.  Use the command:
  433.  
  434.      netrom bcnodes ax0
  435.  
  436. where ax0 is the interface on which you want to send the broadcast.  Do
  437. this for every interface on which you want to do this.
  438.  
  439.    By default, the NET/ROM code does not broadcast the contents of your
  440. routing table.  This is as it should be, since usually we just want to
  441. be the endpoints of communications rather than relaying NET/ROM traffic.
  442. If you want to be a switch station, include the command:
  443.  
  444.      netrom verbose yes
  445.  
  446. in your autoexec.
  447.  
  448.    Sometimes you can hear broadcasts from nodes that can't hear you.  If
  449. your routing table gets filled with these unusable routes, your node will
  450. grind to a halt.  The solution to this is node broadcast filtering, via
  451. the netrom nodefilter command.  There is a filter list, which contains
  452. a list of callsigns and interfaces.  Then there is a filter mode, which
  453. indicates what to do with the list.
  454.  
  455.    If the filter mode is "none", no filtering is done.  If it is "accept",
  456. then only broadcasts from the indicated stations on the indicated 
  457. interfaces are accepted.  If it is "reject", then all broadcasts 
  458. except those from the listed stations on the listed interfaces are
  459. accepted.
  460.  
  461.    Because the net/rom code cannot at this time recognize unusable
  462. routes and try alternates, I strongly recommend use of the filter
  463. command to restrict broadcast acceptance to those nodes which you
  464. know you can reach.
  465.  
  466. "The NET/ROM Routing Table"
  467.  
  468.    The next net/rom commands are those used for maintaining
  469. the routing table.  They fall under the "netrom route" subcommand.
  470. "netrom add" adds a permanent entry to the routing table.  Its format
  471. is:
  472.  
  473.      netrom route add #foo w9foo ax0 192 w9rly
  474.  
  475. This command adds an entry for w9foo, whose alias is #foo, route
  476. quality 192, via w9rly on interface ax0.  Let's talk about what this
  477. means.  w9foo is the *destination* node, the one to whom you want 
  478. the packets routed by the net/rom network.  w9rly is your *neighbor*,
  479. the net/rom node to which you pass the packet to be forwarded.  Since
  480. w9rly may appear on more than one interface (the callsign may be used
  481. by more than one net/rom node on different bands), we specify that 
  482. we are to use ax0 to send the packet.
  483.  
  484.    With net/rom, like IP, we don't know exactly what route a packet
  485. will take to its destination.  We only know the name of a neighbor
  486. which has indicated a willingness to forward that packet (of course,
  487. the neighbor may be the destination itself, but that's unlikely in
  488. our application).  Net/rom sends the packet to the neighbor, with a
  489. network header specifying our callsign and that of the ultimate
  490. destination (in this case w9foo).
  491.  
  492.    We can use the netrom route add command to establish a digipeater
  493. path to the neighbor.  For example:
  494.  
  495.      netrom route add #foo w9foo ax0 192 w9rly wd9igi
  496.  
  497. This will cause us to use wd9igi as a digipeater in establishing our
  498. connection to the net/rom node w9rly.
  499.  
  500.    To drop the route to w9foo, you would type
  501.  
  502.      netrom route drop w9foo w9rly ax0
  503.  
  504.    To see the contents of your routing table, you may type
  505.  
  506.      netrom route
  507.  
  508. and to see the routing entries for an individual station you can type
  509.  
  510.      netrom route info <callsign>
  511.  
  512. You may not use an alias as an argument to the netrom route info command.
  513.  
  514.    I can not stress enough that "route add" and "netrom route add" are two
  515. different commands, with different purposes.  In general, you only need a
  516. "netrom route add" if you need to add a route to a net/rom node via a
  517. digipeater path.  If you find yourself using this command, ask yourself,
  518. "Why am I doing this?"  Many people do not understand that net/rom does
  519. automatic routing (well, sort of :-)).
  520.  
  521. "The Importance of the Routing Table"
  522.  
  523.    The NET/ROM routing table is analogous to the IP routing table:  if
  524. there is nothing in it, your NET/ROM traffic will not go out.  You must
  525. either manually enter a list of routes (perhaps via your autoexec.net)
  526. or wait to receive routing broadcasts from your neighbors before your
  527. NET/ROM traffic will leave your station.
  528.  
  529.    If you go to send packets via NET/ROM and nothing happens, even if
  530. you have trace mode on, make sure that the destination node is in your
  531. NET/ROM routing table.  If sending IP traffic, double check the ARP table
  532. for an appropriate NET/ROM ARP entry for the destination node (see below
  533. for more information on the use of the ARP table).  The ARP table is not
  534. used for NET/ROM transport routing.
  535.  
  536. "Interfacing with NET/ROMs Using Your Serial Port"
  537.  
  538.    What if you have a net/rom node or nodes, and you'd like to attach
  539. them to your computer via their serial interfaces, and use net as a
  540. packet switch?  It's very easy:  you have to attach those interfaces,
  541. using the "attach asy" command, but specifying type "nrs" instead of
  542. "slip" or "kiss".  "nrs" is the net/rom serial framing protocol, which
  543. is like KISS, but uses different framing characters and has an 8-bit
  544. checksum.
  545.  
  546.    When you attach an nrs interface, it can be used for passing IP
  547. datagrams or AX.25 frames over serial lines or modems.  To use it
  548. for net/rom, you have to identify it to the netrom code just like
  549. any other interface, with the "netrom interface" command.
  550.  
  551. "The Time to Live Initializer"
  552.  
  553.    The "netrom ttl" command allows setting of the time-to-live
  554. initializer for NET/ROM datagrams.  I recommend a value of 16
  555. for most networks.  Use more if you expect to go more than 16 hops.
  556. The default is 64.
  557.  
  558.    The purpose of the ttl initializer is to prevent a packet from
  559. getting caught forever in routing loops.  Every router who handles
  560. the packet decrements the ttl field of the network datagram before
  561. sending it on, and when it reaches 0 it is discarded.
  562.  
  563. "Using NET/ROM Support for IP"
  564.  
  565.    Now you know all the commands, but how do we actually use net/rom
  566. for IP communications?  This takes two steps:
  567.  
  568.    Step one:  update the routing table.  In all likelihood, you will
  569. use net/rom to gateway two IP subnets.  So, you'll probably want to
  570. identify a station on each end as a gateway.  Let's say we're on the
  571. Milwaukee subnet, and we want to talk to someone in Madison.  If
  572. we're not the gateway, we just have a routing table entry like this:
  573.  
  574.      route add [44.92.0.0]/24 ax0 wg9ate-pc.ampr
  575.  
  576. This specifies that wg9ate should get all packets for the 44.92.0.x
  577. subnet via interface ax0.
  578.  
  579.    Wg9ate has this routing table entry:
  580.  
  581.      route add [44.92.0.0]/24 netrom w9mad-pc.ampr
  582.  
  583. (presuming that w9mad is the Madison gateway).  Now, when the IP layer
  584. at wg9ate gets datagrams for Madison, it knows that they have to go via
  585. net/rom to w9mad.  Notice that we don't specify a "real" interface,
  586. like ax1 or nr0, in the route entry.  The net/rom network layer will
  587. pick the right interface based on its net/rom routing tables.
  588.  
  589.    We're not done yet, though.  w9mad-pc.ampr is not an ax.25
  590. callsign.  The net/rom send routine called by the IP layer needs
  591. to map from the IP address to an ax.25 address.  It does this via
  592. a manually added arp entry:
  593.  
  594.      arp add w9mad-pc.ampr netrom w9mad
  595.  
  596. [We kind of fudged by using the arp table for this purpose, since
  597. there is no way to do automatic address resolution for net/rom,
  598. and arp messages are never sent or received for net/rom nodes.
  599. However, the arp table does contain precisely what we have here:
  600. mappings from IP addresses to callsigns, and it saved a lot of
  601. code to do it this way.]
  602.  
  603. Notice also that no digipeaters are ever specified in the arp entry
  604. for a net/rom node.  Also, the callsign to which we are mapping
  605. is the final destination of the packet, not the non-destination
  606. neighbor.  That neighbor will be picked based on the net/rom 
  607. routing tables.
  608.  
  609.    So, as a summary, let's look at what happens to a packet that
  610. reaches the IP layer on wg9ate, destined for Madison.  The IP
  611. routing code looks the destination IP address up in the table,
  612. and discovers that it should go via net/rom to w9mad-pc.ampr.
  613. So, it passes the packet to the net/rom send routine.  That
  614. routine uses the arp table to translate w9mad-pc's IP address
  615. to the callsign "w9mad".  Then it passes the packet to the
  616. net/rom routing code.  That code checks to see if the destination
  617. callsign (w9mad) is the same as that of any of its assigned
  618. net/rom interfaces.  Since it isn't, it puts a network layer
  619. header (a.k.a. net/rom level 3 header) on it, and looks for
  620. w9mad in its routing tables.  Presumably, it finds an appropriate
  621. neighbor for the packet, and sends in out via ax.25.  The net/rom
  622. network does the job of actually getting the packet to its 
  623. destination.
  624.  
  625.    At w9mad, the packet's protocol ID causes it to be sent to
  626. the same net/rom routing code that handled the outgoing packet
  627. from wg9ate (running on a different computer, of course).  Now
  628. the destination callsign matches, so the net/rom network layer
  629. header is stripped off, and packet is passed up to the IP layer.
  630. (Net/rom network headers don't have a protocol ID byte, so 
  631. we just hope for the best.  If a net/rom node addresses a
  632. net/rom transport layer packet to us, it is likely to be dropped
  633. by IP for any of a number of reasons.)
  634.  
  635. "The NET/ROM Transport Layer"
  636.  
  637.    NET/ROM transport is the protocol used by NET/ROM node to
  638. communicate end-to-end.  When a user attaches to a NET/ROM
  639. via AX.25, and asks for a connect to a node in the NODES list,
  640. his local NET/ROM tries to open a transport connection to
  641. the destination node over the NET/ROM network.  NET/ROM transport
  642. packets are carried in NET/ROM network datagrams, just like
  643. IP datagrams.
  644.  
  645.    You shouldn't use NET/ROM transport when connecting to other
  646. TCP/IP stations.  TCP is a much better protocol than NET/ROM
  647. transport, and makes better use of available bandwidth.  Also,
  648. BM and SMTP are more convenient to use than a TCP/IP station's
  649. mailbox facility.  However, for communicating with AX.25 users
  650. via the NET/ROM network, the transport facilities in NET will
  651. work better (and more easily) than the traditional method of
  652. connecting to your local node via AX.25.
  653.  
  654. "Connecting via NET/ROM Transport"
  655.  
  656.    To connect to the node whose alias is FOO and whose callsign is
  657. W9FOO, you can issue either of the following two commands:
  658.  
  659.      netrom connect foo
  660.  
  661.      netrom connect w9foo
  662.  
  663. If foo:w9foo is in your NET/ROM routing table, your station will
  664. transmit a connect request to the appropriate neighbor used to
  665. reach w9foo.
  666.  
  667.    NET/ROM transport sessions are very much like those for AX.25.
  668. You can use the disconnect, reset, kick, upload, and record
  669. commands, and the session command to switch sessions.
  670.  
  671. "Displaying the Status of NET/ROM Connections"
  672.  
  673.    The command
  674.  
  675.      netrom status
  676.  
  677. is used to display the status of all NET/ROM connections, which will
  678. include those used in keyboard sessions as well as ones attached to
  679. the mailbox.  For more detailed information on a session, you can
  680. use the address of the NET/ROM control block:
  681.  
  682.      netrom status <&nrcb>
  683.  
  684. where <&nrcb> is the hex address given in the short form of the command
  685. or in the "session" display.
  686.  
  687. "NET/ROM Transport Parameters"
  688.  
  689.    The NET/ROM transport parameters may be set with the various 
  690. NET/ROM subcommands.  Their meanings are listed below:
  691.  
  692.    acktime: This is the ack delay timer, similarly to ax25 t2.
  693.             The default is 3000 ms.
  694.  
  695.    choketime: The time to wait before breaking a send choke condition.
  696.               Choke is the term for NET/ROM flow control.
  697.  
  698.    irtt: The initial round trip time guess, used for timer setting.
  699.  
  700.    qlimit: The maximum length of the receive queue for chat sessions.
  701.            This is similar to ax25 window.
  702.  
  703.    retries: Maximum retries on connect, disconnect, and data frames.
  704.  
  705.    window: Maximum sliding window size, negotiated down at connect
  706.            time.
  707. "The Mailbox"
  708.  
  709.    The AX.25 mailbox also accepts NET/ROM connections.  The "mbox on"
  710. and "mbox off" commands control whether the mailbox is turned on for
  711. NET/ROM as well as AX.25, and the "mbox" command displays current
  712. mailbox connects of both types.  (See Appendix 3 for more on the mbox.)
  713.  
  714.    Many people have observed that the AX.25 mailbox requires the user
  715. to enter a carriage return to bring up the banner and prompt.  This is
  716. because of certain defects of that protocol when it is used as the
  717. link layer for several different higher level protocols, and is 
  718. unavoidable.  (So stop asking, OK? :-))  The NET/ROM mailbox does
  719. not require the carriage return, and will be activated as soon as
  720. the incoming connection is completed.  (See more on mbox, below - K5JB)
  721.  
  722. "Where to go for More Information"
  723.  
  724.    The paper "Transmission of IP Datagrams over NET/ROM Networks"
  725. appeared in the Seventh ARRL Networking Conference papers, available
  726. from the ARRL.  In it, I describe the more technical details of how
  727. the NET/ROM network support works.
  728.  
  729.    If you want to learn about NET/ROM, talk your local NET/ROM or TheNET
  730. operator out of his or her manual.  If you want to learn more, read
  731. the source code.  That's about it for sources, since the NET/ROM
  732. protocols originated in a commercial product.
  733.  
  734. "About the Code"
  735.  
  736.    There has been a great deal of controversy about TheNET, a no-charge
  737. NET/ROM clone for TNCs.  This is not the place to discuss the truth
  738. of the charges leveled by Software 2000 against its authors, but that
  739. situation requires me to make the following statement:
  740.  
  741.    The NET/ROM transport support in NET.EXE was not taken in any way,
  742. shape or form from NET/ROM (whose source I have never seen) or from
  743. TheNET.  The protocol code is based on protocol 6 from Tanenbaum's
  744. excellent book, Computer Networks, as a moderately careful reading
  745. of both should show.  The source code is freely distributed, so
  746. the curious reader should have the opportunity to check this assertion
  747. if he or she so desires.
  748.  
  749.    The smoothed round trip time calculation, which is not done in 
  750. "real" NET/ROMs (and should be, by the way -- they'd work a whole
  751. lot better) is adapted from that used by KA9Q in the TCP protocol
  752. in NET.  The dicey business of adapting it to a sliding windows
  753. protocol with selective retransmission was done by me, all alone,
  754. after my cries for help on the tcp-group mailing list went unanswered :-).
  755.  
  756.    I have taken the precaution of copyrighting the NET/ROM code in
  757. NET.  It may be freely distributed for non-commercial purposes, in
  758. whole or in part, and may be used in other software packages such
  759. as BBS systems if so desired, so long as the copyright notice is
  760. not removed from the source files, and the program in which it is
  761. used displays "NET/ROM code copyright 1989 by Dan Frank, W9NK"
  762. when it starts up.
  763.  
  764.    Any person who wishes to distribute the code, or anything based
  765. on the code, for commercial purposes will find me very reasonable,
  766. but rather insistent about being compensated for the hours I've
  767. spent working on it.  Dan Frank, W9NK
  768.  
  769. *** EOF
  770.  
  771. Appendix 2: The Finger Server
  772.  
  773. In a subdirectory, called, /finger, off of root, put files with name 
  774. format, (name).txt, e.g. k5jb.txt, all.txt, etc.  If someone does, 
  775. finger @k5jb, (my station), his program responds with something to the 
  776. effect:
  777.  
  778.    Known users at k5jb:
  779.       k5jb
  780.       all
  781.  
  782. Then, if he sends, finger all@k5jb, my program sends the contents of 
  783. all.txt to him.  You can see the results of the finger command by doing, 
  784. finger, finger @your_hostname, finger someone@your_hostname, to see what 
  785. your files look like to someone else.  I use the all.txt to hold all the 
  786. current IP addresses I have assigned in the local area.  Use FTP to get 
  787. it from me, if you want.  Joe, K5JB
  788.  
  789. *** EOF
  790.  
  791. Appendix 3: Added mailbox (mbox) features.
  792.  
  793. Notes from K5JB for added mbox features:
  794.  
  795. What follows is my note from my source code.
  796.  
  797. This version, 890421.0g (K5JB), allows someone who connects to the mbox, 
  798. via AX.25 or Net/ROM, to read mail, kill his mail, see who has mail, get 
  799. a help message, get directory lists and download text files.  It searches 
  800. the directory, \spool\mail (or $(SPOOL)\mail, if you defined the 
  801. environmental variable, SPOOL) for for a *.txt file containing the user's 
  802. call sign and if there is one, tells him that he has mail before the 
  803. initial prompt.  The prompt, which is compiled in, doesn't show all the 
  804. possible commands.  It shows, "Chat", "Send", "Read", "Kill", "Help", and 
  805. "Bye".  Additional commands are, "Get", "List" (a directory function) and 
  806. "Mail" (list who has mail).  "Read" causes the entire mail file 
  807. (call.txt) for that user to be sent.  "Kill" deletes it.  The help file, 
  808. helpbox.net can contain information on these unlisted commands, if you 
  809. want to enable them.  (The "Users" command is a compile-time selected 
  810. option but it doesn't have much useful purpose except to list other users 
  811. who might be on the mailbox at the same time you are.)
  812.  
  813. Mail and other file downloading is primitive and there is no provision 
  814. to selectively read mail messages.  If a user has more than one mail 
  815. message they are all sent at once.  A Kill command kills all the 
  816. messages to him by deleting the .txt file that contains them.  
  817. Downloading (receiving) of files (resulting from: read mail, list 
  818. directory, get file) can be aborted by the operator sending a character 
  819. to the mbox while the downloading is taking place.  (Empty line alone 
  820. won't do it.)  A disconnect will stop the downloading, but the IP 
  821. operator will get a warning message about clearing garbage.  No harm is 
  822. done.
  823.  
  824. Three file path names were added to support the added functions in 
  825. ax_mbx.c.  They are marked below with ">".  In net, version 890421.0, 
  826. suffix g, for the MS-DOS computer, only 2 of them are used, *helpbox and 
  827. *public.  helpbox.net is a help file that contains whatever you want in 
  828. there, and public is a directory off of root that contains files that 
  829. are suitable for downloading over ax.25 links.  (In other words, no 
  830. binaries, and no monsters).  There is no connect message function 
  831. compiled into the suffix i version.  (Suffix g version can use 
  832. environmental variables to specify paths different than those compiled 
  833. in as defaults.  See the note below.)
  834.  
  835. For reference, here is the complete list of files declared in files.c 
  836. for the MS-DOS computers:
  837.  
  838. char *startup = "/autoexec.net";   /* Initialization file */
  839. char *userfile = "/ftpusers";      /* Authorized FTP users and passwords */
  840. char *hosts = "/hosts.net";        /* Network host table */
  841. char *mailspool = "/spool/mail";   /* Incoming mail */
  842. char *mailqdir = "/spool/mqueue";  /* Outgoing mail spool */
  843. char *mailqueue = "/spool/mqueue/*.wrk"; /* Outgoing mail work files */
  844. char *routeqdir = "/spool/rqueue"; /* queue for router */
  845. char *alias = "/alias";            /* the alias file */
  846. >char *cmsg = "/net/conmsg.net";  /* connect message for mbox (not used) */
  847. >char *helpbox = "/net/helpbox.net"; /* help file for mbox */
  848. >char *public = "/public";          /* directory downloadable from mbox */
  849. char *fingersuf = ".txt";          /* Text info for finger command */
  850. char *fingerpath = "/finger/";     /* Path to finger info files */
  851.  
  852. If you use bm.exe as your mailer, you need bm.rc in the root.
  853.  
  854. (BTW, the "/" in the file names is correct.  The functions that use them 
  855. don't care.)
  856.  
  857.                                HELPBOX.NET
  858.  
  859. Here is an example of helpbox.net that I use:
  860.  
  861. (blank line)
  862. This is just a mail drop function.  You can read mail addressed to you or
  863. send mail to someone else in the local area, or someone else on the TCP/IP
  864. network.  Here are the commands that aren't listed in the prompt:
  865.  
  866. m Lists calls of those who have mail here.
  867.  
  868. l Lists downloadable file names that are in a public directory.
  869.  
  870. g (filename) gets one of those files.  Use, g morehelp, to get a more complete
  871.   help file that explains some of the peculiarities of this thing.
  872.  
  873. Enjoy!  Joe, K5JB
  874. (blank line)
  875. (end of helpbox.net)
  876.  
  877. Helpbox.net is short because people are prone to type "h" when they 
  878. can't think of anything else to do and if the path is poor, a short file 
  879. makes the results merciful.  The file, "morehelp" in the \public 
  880. directory is much more informative (longer).
  881.  
  882. *** EOF
  883.  
  884. Appendix 4: Floppy use
  885.  
  886. The following suggestion for floppy users provided by John Conner, 
  887. WD0FHG.
  888. ------
  889. Note to floppy users with two drives and using DOS 3.0 or later (you 
  890. don't have two drives?---go trade a HT battery pack for one they are 
  891. much more useful :-): 
  892.  
  893. At present NET does not understand different drives.  To make B: 
  894. accessable to NET enter the following command from A:> BEFORE running 
  895. NET.
  896.  
  897.     JOIN B: A:\PUBLIC
  898.  
  899. This command makes drive B: appear to be the subdirectory PUBLIC on 
  900. drive A: and all files and subdirectories on B: can be accessed by 
  901. adding \PUBLIC\ to the file name.  In effect we just doubled the size of 
  902. the A: drive.  A couple of cautions about using this command.  First be 
  903. sure you have a formated disk in B: when running NET or it will hang 
  904. trying to read the B: disk. Second the JOIN command is actually a file 
  905. on your DOS disk and will need to be on the disk in the A: drive when 
  906. you enter the command.
  907.  
  908. (PUBLIC can be any name that is not already used on drive A:. I use the 
  909. \PUBLIC as the area all ftp users have access to.  WD0FHG)
  910.  
  911. *** EOF
  912.